package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ee.chat.common.entity.UserDynamic;
import org.apache.ibatis.annotations.Param;

import java.util.*;

/**
 * <p>
 * Mapper接口
 * </p>
 *
 * @author Shane
 * @since 2019-07-29
 */
public interface UserDynamicMapper extends BaseMapper<UserDynamic> {
    int insertDynamic(@Param("dynamic") UserDynamic dynamic);

    /**
     * 获取主播动态
     * @Author Shane
     * @Date 2019/7/2912:08
     * @param userId        用户id
     * @param toUserId      须查看的用户id
     * @return
     **/
    IPage<Map<String, Object>> getUserDynamic(Page page, @Param("userId") Integer userId, @Param("toUserId") Integer toUserId);

    IPage<Map<String, Object>> getUserDynamics(Page page, @Param("userId") Integer userId);

    /**
     * 获取主播动态权重
     * @Author Shane
     * @Date 2019/8/710:26
     * @param
     * @return
     **/
    IPage<Map<String, Object>> getHostDynamicWI(Page page);

    /**
     * 获取热门动态
     * @param page
     * @param userId
     * @param historyIds
     * @return
     */
    IPage<Map<String, Object>> getDynamicsOrderByWI(Page page, @Param("userId") Integer userId, @Param("historyIds") Set historyIds);

    /**
     * 获取最新动态
     * @Author Shane
     * @Date 2019/8/716:12
     * @param id        起始动态id
     * @param userId    用户id
     * @return
     **/
    IPage<Map<String, Object>> getDynamicOrderByTime(Page page, @Param("id") Integer id, @Param("userId") Integer userId);

    /**
     * 获取最近动态
     * @param page
     * @param userId
     * @return
     */
    IPage<Map<String, Object>> getDynamicOrderDistance(Page page, @Param("userId") Integer userId, @Param("lng") Double lng, @Param("lat") Double lat);

    /**
     * 获取指定类型动态
     * @param page
     * @param userId
     * @param type
     * @return
     */
    IPage<Map<String, Object>> getDynamicOrderType(Page page, @Param("userId") Integer userId, @Param("type") Integer type);

    /**
     * 查询审核列表
     * @Author Shane
     * @Date 2019/10/2319:17
     * @param
     * @return
     **/
    IPage<Map<String, Object>> list(Page page, @Param("userId") Integer userId, @Param("status") Integer status,
                                    @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 更新动态位置
     * @param id
     * @return
     */
    int updateLnglat(@Param("id") Integer id, @Param("lnglat") String lnglat);

    /**
     * 根据id修改动态审核信息
     * @Author AppiJ
     * @Date 2021/3/17 11:25
     * @param
     * @return
     */
    int updDynamicById(UserDynamic userDynamic);
}